From 49bdc4f0c2a2f1bd1cc0884133f8baf5dfea4686 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 30 Oct 2020 00:22:47 -0400 Subject: [PATCH] Add another constraints demo This one attempts to use constraints in a ui file. It doesn't work. --- demos/gtk-demo/constraints.ui | 113 ++++++++++++++++++++++++++++++ demos/gtk-demo/constraints4.c | 57 +++++++++++++++ demos/gtk-demo/demo.gresource.xml | 4 ++ demos/gtk-demo/meson.build | 1 + 4 files changed, 175 insertions(+) create mode 100644 demos/gtk-demo/constraints.ui create mode 100644 demos/gtk-demo/constraints4.c diff --git a/demos/gtk-demo/constraints.ui b/demos/gtk-demo/constraints.ui new file mode 100644 index 0000000000..37a58ba87f --- /dev/null +++ b/demos/gtk-demo/constraints.ui @@ -0,0 +1,113 @@ + + + + Constraints + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Child 1 + + + + + Child 2 + + + + + Child 3 + + + + + + diff --git a/demos/gtk-demo/constraints4.c b/demos/gtk-demo/constraints4.c new file mode 100644 index 0000000000..8bde6af653 --- /dev/null +++ b/demos/gtk-demo/constraints4.c @@ -0,0 +1,57 @@ +/* Constraints/Builder + * + * GtkConstraintLayouts can be created in .ui files, and + * constraints can be set up at that time as well, as this + * example demonstrates. + */ + +#include +#include + +G_DECLARE_FINAL_TYPE (ConstraintsGrid, constraints_grid, CONSTRAINTS, GRID, GtkWidget) + +struct _ConstraintsGrid +{ + GtkWidget parent_instance; +}; + +G_DEFINE_TYPE (ConstraintsGrid, constraints_grid, GTK_TYPE_WIDGET) + +static void +constraints_grid_init (ConstraintsGrid *grid) +{ +} + +static void +constraints_grid_class_init (ConstraintsGridClass *klass) +{ +} + +GtkWidget * +do_constraints4 (GtkWidget *do_widget) +{ + static GtkWidget *window; + + if (!window) + { + GtkBuilder *builder; + + g_type_ensure (constraints_grid_get_type ()); + + builder = gtk_builder_new_from_resource ("/constraints4/constraints.ui"); + + window = GTK_WIDGET (gtk_builder_get_object (builder, "window1")); + gtk_window_set_display (GTK_WINDOW (window), + gtk_widget_get_display (do_widget)); + g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window); + + g_object_unref (builder); + } + + if (!gtk_widget_get_visible (window)) + gtk_widget_show (window); + else + gtk_window_destroy (GTK_WINDOW (window)); + + return window; +} diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml index bcb2ebc3b5..89d88edaa3 100644 --- a/demos/gtk-demo/demo.gresource.xml +++ b/demos/gtk-demo/demo.gresource.xml @@ -18,6 +18,9 @@ demoimage.c demoimage.h + + constraints.ui + css_accordion.css reset.css @@ -242,6 +245,7 @@ constraints.c constraints2.c constraints3.c + constraints4.c css_accordion.c css_basics.c css_blendmodes.c diff --git a/demos/gtk-demo/meson.build b/demos/gtk-demo/meson.build index 2d1efc4170..39070bb925 100644 --- a/demos/gtk-demo/meson.build +++ b/demos/gtk-demo/meson.build @@ -9,6 +9,7 @@ demos = files([ 'constraints.c', 'constraints2.c', 'constraints3.c', + 'constraints4.c', 'css_accordion.c', 'css_basics.c', 'css_blendmodes.c', -- 2.30.2